This invention relates to serving a multitude of users over an open network with server rendered real-time revised images, and more particularly, to the rendering of composite product images from initial product images and user revisions of custom design images.
Printing services web sites which allow a user to access the site from a computer located at the user's home or work and design and purchase an item of apparel, such as a t-shirt or other item, are well known and widely used by many consumers and businesses. Typically, these printing services sites allow the user to first review stock images of the various products that are available from the provider. When the user selects a specific product to customize, the sites typically provide online tools allowing the user to provide the text that the user desires to appear on the customized product. The user is also typically allowed to either upload a full color image from the user's computer to be incorporated into the product design or select from a number of decorative designs, images, and other graphic elements that are provided for the user's use by the printing services provider. Images of the user text entries and the user-selected decorative elements, collectively referred to herein as “design images” are combined with the basic product image to create a composite image indicating the appearance of the printed product. When the design is completed to the user's satisfaction, the user can place an order through the site for production of a desired quantity of the corresponding printed product using a computer-to-textile printing system.
To avoid customer frustration with the customization process, it is desirable that the web site timely respond to user input, particularly in the display of a composite product image. Such timeliness may be severely challenged when the rendering software runs on the server of the printing services provider. The rendering operation may be computationally intensive, and require special software not found on a typical customer's computer. For example, a process of rendering images in a manner that blends the colors of the design image with the underlying color of the product may add to the computational complexity. As customers' computers vary in their processing capabilities, it is difficult to determine how long rendering might take, and therefore difficult to gauge customer satisfaction with the process. In addition, the rendering software may be proprietary, difficult to install, or incompatible with the client hardware or operating system. For these reasons, rendering a design image with a product image may preferably be done not on a customer's computer, but on a computer controlled by the printing services provider.
This choice of rendering location leads to its own set of delays. Information about the design must be transferred from the user's computer to the services provider and the rendered image must be transferred back. This process incurs a delay as the data travels through the Internet, from one computer to another until it reaches its destination. Use of the computer network delays timely responses to user input. More significantly, with regard to a central printing services provider serving many thousands of users over the Internet, delays can be incurred due to simultaneous demands on the central server to access its database for data required to render images. The typical mechanism for updating a server-rendered image to reflect changes made in a browser involves making two requests to the server. The first request sends information about changes made to the design to the server, which is subsequently written to a data store such as a database. In the second request, the browser typically sends a unique identifier for the user's document to the server, which renders the image. In particular, in HTML an IMG tag that calls for an image supports a GET which has limited data size and is thus unable to send all of the data needed to characterize a design. The unique identifier, however, can be easily sent to the server in a GET.
When a multitude of users are accessing the printing services provider, at the same time calling for use of the rendering software, delays are typically encountered. As users simultaneously revise their custom designs, many thousands of periodic updates to the database are required. Each time a user makes a change to her design, storing and retrieving the design data incurs a delay, as well as incurring additional I/O and computational expense on the servers. In a popular system, such frequent accessing of the database can result in noticeable delays that users may find frustrating. In addition, some printing service providers use the database for purposes other than storing image data, such as taking customer orders. Satisfying these other purposes further taxes the system providing the database, increasing delays.
To minimize customer frustration with non-responsive or slow web sites, and to minimize the risk of losing customers due to this frustration, it is highly desirable that the printing service provider supply a composite image quickly after user input. There is therefore a need for systems and methods which render composite product images for a multitude of users without causing frustrating delays for the users.